package com.yidu.qianfeng.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yidu.qianfeng.common.bean.track.TrackWaybillCondition;
import com.yidu.qianfeng.common.bean.track.TrackWaybillWrap;
import com.yidu.qianfeng.common.bean.transport.Signfor;
import com.yidu.qianfeng.common.bean.transport.TrackWaybill;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @Author: TangSheng
 * @Description: 运单跟踪数据实体映射
 * @Date Created in 14:30 2021/3/29
 * @since 1.0
 */

@Repository("trackWaybillMapper")
@Mapper
public interface TrackWaybillMapper extends BaseMapper<TrackWaybill> {

    /**
     * 根据偏移量和显示条目数查询运单跟踪记录
     * @param offset 偏移量
     * @param limit 显示条目数
     * @return list结果集
     */
    public List<TrackWaybillWrap> selectTrackLimit(@Param("offset") Integer offset,@Param("limit") Integer limit);


    /**
     * 根据条件，分页查询跟踪记录数据的总条目数
     * @param trackCondition 查询条件包装类
     * @return 查询的展示数据包装类列表
     */
    public Integer selectTrackCountByCondition(@Param("trackCondition")TrackWaybillCondition trackCondition);

    /**
     * 根据条件，分页查询跟踪记录数据
     * @param trackCondition 查询条件包装类
     * @return 查询的展示数据包装类列表
     */
    public List<TrackWaybillWrap> selectTrackByCondition(@Param("trackCondition")TrackWaybillCondition trackCondition);

    /**
     * 查询未签收的运单
     * @param offset 偏移量
     * @param limit 显示条目数
     * @return 查询的展示数据包装类列表
     */
    public List<TrackWaybillWrap> selectNoSignTrack(@Param("offset") Integer offset,@Param("limit") Integer limit);

    /**
     * 查询未签收的运单跟踪的数据
     * @return 查询的展示数据包装类列表
     */
    public Integer selectNoSignTrackCount();

    /**
     * 分页查询已签收运单信息
     * @param page 页面
     * @param limit 页目
     * @return 集合对象
     */
    public List<TrackWaybill> selectSignforPaing(int page,int limit);

    /**
     * 查询已签收运单信息个数
     * @return 结果
     */
    public int selectSignforCount();

    /**
     * 根据托运单号查询数据
     * @param trackConsignNum 托运单号
     * @return 结果对象
     */
    public List<TrackWaybill> bytrackConsignNumSelect(String trackConsignNum);

    /**
     * 查询派送中的托运单号
     * @return 结果对象
     */
    public List<TrackWaybill> getTrackConsignNum();

    /**
     * 根据托运单号查询到达站司机
     * @param trackConsignNum 托运单号
     * @return 结果集合对象
     */
    public List<TrackWaybill> byTrackConsignNumQueryDriver(String trackConsignNum);

    /**
     * 新增签收表
     * @param signfor 签收表对象
     * @return 结果
     */
    public int addSignfor(Signfor signfor);

    /**
     * 根据运单跟踪表主键修改跟踪类型
     * @param trackId 主键id
     * @return 结果
     */
    public int updatetrackType(String trackId,String trackStatus,String trackReceiptPhotoUrl);

}
